#region Copyright

// // The contents of this file are subject to the Mozilla Public License
// // Version 1.1 (the "License"); you may not use this file except in compliance
// // with the License. You may obtain a copy of the License at
// //   
// // http://www.mozilla.org/MPL/
// //   
// // Software distributed under the License is distributed on an "AS IS"
// // basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
// // License for the specific language governing rights and limitations under 
// // the License.
// //   
// // The Initial Developer of the Original Code is Robert Smyth.
// // Portions created by Robert Smyth are Copyright (C) 2013.
// //   
// // All Rights Reserved.

#endregion

using System;
using NMock;
using NUnit.Framework;

namespace NoeticTools.DocXSvnVersionStamper.Tests
{
    public abstract class MockingTestFixtureBase
    {
        private MockFactory _factory;

        public IDisposable Ordered
        {
            get { return _factory.Ordered(); }
        }

        public Mock<T> NewMock<T>() where T : class
        {
            return _factory.CreateMock<T>();
        }

        [SetUp]
        public void SetUpBase()
        {
            _factory = new MockFactory();
            SetUp();
        }

        [TearDown]
        public void TearDownBase()
        {
            TearDown();
            _factory.VerifyAllExpectationsHaveBeenMet();
            _factory.ClearExpectations();
            _factory.Dispose();
        }

        protected abstract void TearDown();

        protected abstract void SetUp();
    }
}